#include "key.h"
#include "systick.h"

// 查看原理图得
// K1 - PA0
// K1 按下时 PA0 输入低电平，松开时高电平

/**
 * 简述：初始化 K1 按键
 * 参数：无
 * 返回值：无
 **/
void k1_init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	
	// 打开 GPIOA 时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	// 配置 PA0 为输入上拉
	GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPU;
	GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_0;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
}

/**
 * 简述：获取 K1 按键状态
 * 参数：无
 * 返回值：K1_PRESSED 按下，K1_NONE 未按下
 **/
int k1_pressed(void)
{
	if (!K1) {  // 如果按下了
		// 按下时延时去抖
		systick_ms(80);
		while (!K1);  // 等待松开
		// 松开时延时去抖
		systick_ms(80);
		return K1_PRESSED;
	}
	
	return K1_NONE;  // 未按下
}
